package city.spring.modules.work.repository;

import city.spring.modules.work.entity.WorkScheduleItemEntity;
import city.spring.modules.work.vo.WorkScheduleItemVO;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 存储库：上班计划表（人员上班结果记录）
 *
 * @author 侯坤林
 * @date 2020-06-04 16:43:43
 */
@Repository
public interface WorkScheduleItemRepository extends BaseMapper<WorkScheduleItemEntity> {

    /**
     * 获取某个排班主题的所有排班结果信息
     *
     * @param wrapper 查询对象
     * @return
     */
    List<WorkScheduleItemVO> getItems(@Param(Constants.WRAPPER) Wrapper<? extends WorkScheduleItemEntity> wrapper);

    /**
     * 获取某个排班主题的所有排班结果信息
     *
     * @param scheduleId 排班主题（排班表ID）
     * @param isEnabled  是否启用
     * @return schedule items
     */
    List<WorkScheduleItemVO> getScheduleItems(@Param("scheduleId") String scheduleId, @Param("isEnabled") Boolean isEnabled);

    /**
     * 获取某个用户在某个排班表的排班信息
     *
     * @param userId     用户ID
     * @param scheduleId 排班表ID
     * @return user schedule items
     */
    List<WorkScheduleItemVO> getUserScheduleItems(String userId, String scheduleId);
}